<?php
session_start();

function cal_total_price($cart)
{

    $result['count'] = 0;
    $result['total'] = 0;

    if (isset($cart) && !empty($cart)) {
        $result['count'] = count($cart);
        foreach ($cart as $product) {
            $result['total'] += $product['num'] * $product['price'];
        }
    }

    return $result;
}

// AJAX ADD TO CART
add_action('wp_ajax_azio_ajax_addtocart', 'azio_ajax_addtocart');
add_action('wp_ajax_nopriv_azio_ajax_addtocart', 'azio_ajax_addtocart');
function azio_ajax_addtocart()
{
    $result['status'] = false;
    $count = 0;
    if (isset($_POST['id']) && !empty($_POST['id']) && isset($_POST['num']) && !empty($_POST['num'])) {

        $product_id = intval($_POST['id']);
        $num = intval($_POST['num']);

        $product = get_post($product_id);

        // Kiem tra san pham
        if (empty($product) || (get_post_type($product) != 'product') || (get_post_status($product) != 'publish')) {
            $result['status'] = false;
            echo json_encode($result);
            die();
        }

        // Kiem tra so luong
        if ($num <= 0) {
            $num = 1;
        }

        $product_fields = Azio_Posts::getProductField($product_id, true);
        $image_avatar = wp_get_attachment_image_src(get_post_thumbnail_id($product_id), 'avatar');
        $permalink = get_permalink($product_id);

        if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
            // Neu chua co cart, khoi tao cart va them san pham
            $_SESSION['cart'] = array();

            $_SESSION['cart'][$product_id]['id'] = $product_id;
            $_SESSION['cart'][$product_id]['num'] = $num;
            $_SESSION['cart'][$product_id]['name'] = $product->post_title;
            $_SESSION['cart'][$product_id]['price'] = intval($product_fields['giaban']);
            $_SESSION['cart'][$product_id]['image'] = $image_avatar[0];
            $_SESSION['cart'][$product_id]['link'] = $permalink;
        } else {
            // Neu da co cart, kiem tra san pham
            $found = array_key_exists($product_id, $_SESSION['cart']);
            if ($found) {
                // Da co san pham: tang so luong
                $_SESSION['cart'][$product_id]['num'] += $num;
            } else {
                // Chua co san pham: them san pham vao
                $_SESSION['cart'][$product_id]['id'] = $product_id;
                $_SESSION['cart'][$product_id]['num'] = $num;
                $_SESSION['cart'][$product_id]['name'] = $product->post_title;
                $_SESSION['cart'][$product_id]['price'] = intval($product_fields['giaban']);
                $_SESSION['cart'][$product_id]['image'] = $image_avatar[0];
                $_SESSION['cart'][$product_id]['link'] = $permalink;
            }
        }

        $cart_sum = cal_total_price($_SESSION['cart']);
        $result['status'] = true;
        $result['total_count'] = $cart_sum['count'];
        $result['total_price'] = $cart_sum['total'];
        $result['product'] = $_SESSION['cart'][$product_id];

        echo json_encode($result);
    }

    die();
}


// AJAX UPDATE CART
add_action('wp_ajax_azio_ajax_updatecart', 'azio_ajax_updatecart');
add_action('wp_ajax_nopriv_azio_ajax_updatecart', 'azio_ajax_updatecart');
function azio_ajax_updatecart()
{
    $result['status'] = false;
    $count = 0;
    if (isset($_POST['id']) && !empty($_POST['id']) && isset($_POST['num']) && !empty($_POST['num'])) {

        $product_id = intval($_POST['id']);
        $num = intval($_POST['num']);

        $product = get_post($product_id);

        // Kiem tra san pham
        if (empty($product) || (get_post_type($product) != 'product') || (get_post_status($product) != 'publish')) {
            $result['status'] = false;
            echo json_encode($result);
            die();
        }

        // Kiem tra so luong
        if ($num <= 0) {
            $num = 1;
        }

        $product_fields = Azio_Posts::getProductField($product_id, true);
        $image_avatar = wp_get_attachment_image_src(get_post_thumbnail_id($product_id), 'avatar');
        $permalink = get_permalink($product_id);

        if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
            // Neu chua co cart, bao loi
            $result['status'] = false;
            echo json_encode($result);
            die();
        } else {
            // Neu da co cart, kiem tra san pham
            $found = array_key_exists($product_id, $_SESSION['cart']);
            if ($found) {
                // Da co san pham, cap nhat so luong
                $_SESSION['cart'][$product_id]['num'] = $num;
            } else {
                // Chua co san pham, bao loi
                $result['status'] = false;
                echo json_encode($result);
                die();
            }
        }

        $cart_sum = cal_total_price($_SESSION['cart']);
        $result['status'] = true;
        $result['total_count'] = $cart_sum['count'];
        $result['total_price'] = $cart_sum['total'];
        $result['product'] = $_SESSION['cart'][$product_id];

        echo json_encode($result);
    }

    die();
}


// AJAX DELETE ITEM
add_action('wp_ajax_azio_ajax_deleteitem', 'azio_ajax_deleteitem');
add_action('wp_ajax_nopriv_azio_ajax_deleteitem', 'azio_ajax_deleteitem');
function azio_ajax_deleteitem()
{
    $result['status'] = false;
    $count = 0;
    if (isset($_POST['id']) && !empty($_POST['id'])) {

        $product_id = intval($_POST['id']);

        $product = get_post($product_id);

        // Kiem tra san pham
        if (empty($product) || (get_post_type($product) != 'product') || (get_post_status($product) != 'publish')) {
            $result['status'] = false;
            echo json_encode($result);
            die();
        }

        if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
            // Neu chua co cart, bao loi
            $result['status'] = false;
            echo json_encode($result);
            die();
        } else {
            // Neu da co cart, kiem tra san pham
            $found = array_key_exists($product_id, $_SESSION['cart']);
            if ($found) {
                // Da co san pham, xoa san pham
                unset($_SESSION['cart'][$product_id]);
            } else {
                // Chua co san pham, bao loi
                $result['status'] = false;
                echo json_encode($result);
                die();
            }
        }

        $cart_sum = cal_total_price($_SESSION['cart']);
        $result['status'] = true;
        $result['total_count'] = $cart_sum['count'];
        $result['total_price'] = $cart_sum['total'];
        $result['deleted_id'] = $product_id;

        echo json_encode($result);
    }

    die();
}

// AJAX DELETE CART
add_action('wp_ajax_azio_ajax_deletecart', 'azio_ajax_deletecart');
add_action('wp_ajax_nopriv_azio_ajax_deletecart', 'azio_ajax_deletecart');
function azio_ajax_deletecart()
{
    $result['status'] = false;


    if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
        // Neu chua co cart, bao loi
        $result['status'] = false;
        echo json_encode($result);
        die();
    } else {
        unset($_SESSION['cart']);
    }

    $result['status'] = true;

    echo json_encode($result);

    die();
}

// AJAX CHECKOUT
add_action('wp_ajax_azio_ajax_checkout', 'azio_ajax_checkout');
add_action('wp_ajax_nopriv_azio_ajax_checkout', 'azio_ajax_checkout');
function azio_ajax_checkout()
{
    $result['status'] = false;
    $result['message'] = 'Quá trình đặt hàng thất bại, vui lòng thử lại sau!';

    if (!isset($_SESSION['cart']) || empty($_SESSION['cart'])) {
        // Neu chua co cart, bao loi
        $result['status'] = false;
        $result['message'] = 'Bạn chưa chọn sản phẩm nào để có thể tiến hành đặt hàng.';
        echo json_encode($result);
        die();
    }

    $mailto = ot_get_option('op_email');

    if (!isset($mailto) || empty($mailto)) {
        // Neu khong co email nhan
        $result['status'] = false;
        $result['message'] = 'Xin lỗi quý khách, chức năng đặt hàng hiện đang tạm khóa.';
        echo json_encode($result);
        die();
    }


    if (isset($_POST['cart_email'])) {

        $name = $_POST['cart_name']; // required
        $address = $_POST['cart_address']; // required
        $email_from = $_POST['cart_email']; // required
        $telephone = $_POST['cart_telephone']; // required
        $comments = $_POST['cart_comment']; // not required


        $email_message = "Thông tin người đặt hàng:<br /><br />";

        function clean_string($string)
        {
            $bad = array("content-type", "bcc:", "to:", "cc:", "href");
            return str_replace($bad, "", $string);
        }

        $email_message .= "<b>Họ Tên:</b> " . clean_string($name) . "<br />";
        $email_message .= "<b>Địa chỉ:</b> " . clean_string($address) . "<br />";
        $email_message .= "<b>Email:</b> " . clean_string($email_from) . "<br />";
        $email_message .= "<b>Điện thoại:</b> " . clean_string($telephone) . "<br />";
        $email_message .= "<b>Ghi chú:</b> " . clean_string($comments) . "<br /><br /><br />";
        $email_message .= "------ Thông tin đặt hàng ------ <br /><br />";

        $email_message .= '<table>';

        if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
            $cart_sum = cal_total_price($_SESSION['cart']);
        } else {
            $cart_sum['total'] = 0;
        }

        if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
            $email_message .= '<table>
                                    <thead>
                                    <tr>
                                        <td class="image">Hình ảnh</td>
                                        <td class="name">Tên sản phẩm</td>
                                        <td class="quantity">Số lượng</td>
                                        <td class="price">Đơn giá (VNĐ)</td>
                                        <td class="total">Tổng cộng</td>
                                    </tr>
                                    </thead>
                                    <tbody>';

            foreach ($_SESSION['cart'] as $cart_product) {
                $email_message .= '<tr>
                <td class="image"><img src="' . $cart_product['image'] . '" width="100" height="100"/></td>
                <td class="name">' . $cart_product['name'] . '</td>
                <td class="quantity">' . $cart_product['num'] . '</td>
                <td class="price">' . number_format($cart_product['price'], 0, ',', ',') . ' ₫</td>
                <td class="total">' . number_format(($cart_product['price'] * $cart_product['num']), 0, ',', ',') . ' ₫</td>
                </tr>';
            }

            $email_message .= '</tbody></table>';
        }

        $email_message .= "</table>";
        $email_message .= "------ Tổng giá tiền: <b>" . number_format($cart_sum['total'], 0, ',', ',') . " ₫ </b>" . "<br /><br />";
        $email_message .= "- Email này được gửi tự động từ chức năng đặt mua hàng tại website " . get_bloginfo('name') . " -";

        // create info
        $email_to = $mailto; // Email to HERE
        $email_subject = "Đơn đặt hàng từ website " . get_bloginfo('name') . " - Khách hàng: " . clean_string($name);

        // create email headers - Gửi mail 1
        $headers = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
        $headers .= 'From: ' . $email_from . "\r\n" .
            'Reply-To: ' . $email_from . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

        if (function_exists('wp_mail')) {
            $send_mail = wp_mail($email_to, $email_subject, $email_message, $headers);
        }


        session_unset('cart');
        // end Gui Hang


        if ($send_mail) {
            $result['status'] = true;
            $result['message'] = "Đặt hàng thành công, xin cảm ơn quý khách. Chúng tôi sẽ liên hệ lại để xác nhận trong thời gian sớm nhất!";
        }
    }

    echo json_encode($result);
    die();
}